Skip to content

Add resizable saved-view columns - #2421

Merged
ejsmith merged 17 commits into
mainfrom
issue/saved-view-column-settings
Aug 2, 2026
Merged

Add resizable saved-view columns#2421
ejsmith merged 17 commits into
mainfrom
issue/saved-view-column-settings

Conversation

@ejsmith

@ejsmith ejsmith commented Jul 29, 2026

Copy link
Copy Markdown
Member

Summary

  • Add mouse, touch, and keyboard column resizing to the Events, Stacks, and Stream tables, with a wider 240px default for Project.
  • Store all per-column state under the existing columns property, keyed by column ID with { visible, position, width } settings.
  • Remove column_order and avoid introducing a parallel column_settings property.
  • Add versioned, resumable migration 4 to convert boolean columns values, fold in column_order, and remove the legacy field.
  • Preserve predefined-view update behavior: pristine hashes move to the migrated baseline while customized views remain protected.
  • Update OpenAPI, generated TypeScript contracts, validation, and saved-view/predefined-view coverage.

Why

Project names are commonly truncated, and column width customizations should follow the saved view. Keeping one extensible columns map also gives future column settings a stable place without adding more top-level fields.

Migration and rollout

This intentionally changes the persisted and API shape of columns from boolean values to settings objects and removes column_order. There are no older clients to support, but existing saved-view documents must be migrated.

The Migration job runs version 4 before predefined saved views are seeded. The migration is resumable, uses optimistic concurrency to protect edits made while it runs, and can be retried safely after a conflict. The updated web application may return brief saved-view errors until the migration completes.

Validation

  • dotnet build tests/Exceptionless.Tests/Exceptionless.Tests.csproj --no-restore -m:1 — 0 warnings, 0 errors
  • affected saved-view API, OpenAPI, mapping, serialization, predefined-hash, migration, and job-option suites against Elasticsearch 8.19.15 — 136 passed
  • focused frontend column/saved-view/table tests — 50 passed
  • npm run validate — formatting, Svelte diagnostics, and lint passed
  • git diff --check — clean

@ejsmith
ejsmith marked this pull request as ready for review July 29, 2026 04:13
@ejsmith
ejsmith force-pushed the issue/saved-view-column-settings branch from 9d9adb1 to 9eb09f6 Compare July 29, 2026 04:59
@ejsmith ejsmith changed the title Add saved view column sizing Add resizable saved-view columns Jul 29, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9eb09f6ab6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/Exceptionless.Core/Models/SavedView.cs
Comment thread src/Exceptionless.Web/Models/SavedView/NewSavedView.cs
Comment thread src/Exceptionless.Core/Migrations/003_MigrateSavedViewColumns.cs Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 16bbb8a14a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 028da3feea

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/Exceptionless.Core/Migrations/003_MigrateSavedViewColumns.cs Outdated
@ejsmith

ejsmith commented Aug 1, 2026

Copy link
Copy Markdown
Member Author

/preview

@github-actions github-actions Bot added the dev-preview Deploy this pull request to the shared dev environment. label Aug 1, 2026
@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown

Preview deployed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5e177baeaf

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/Exceptionless.Core/Migrations/005_MigrateSavedViewColumns.cs Outdated
@ejsmith

ejsmith commented Aug 1, 2026

Copy link
Copy Markdown
Member Author

/preview

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8158f17104

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/Exceptionless.Core/Jobs/Elastic/MigrationJob.cs
Comment thread src/Exceptionless.Core/Migrations/005_MigrateSavedViewColumns.cs Outdated
@ejsmith

ejsmith commented Aug 1, 2026

Copy link
Copy Markdown
Member Author

/preview

@ejsmith

ejsmith commented Aug 1, 2026

Copy link
Copy Markdown
Member Author

/preview

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 16362ae1f5

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/Exceptionless.Core/Models/SavedViewColumnSettings.cs
@ejsmith

ejsmith commented Aug 1, 2026

Copy link
Copy Markdown
Member Author

/preview

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: acd467a3c5

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/Exceptionless.Web/Api/Handlers/SavedViewHandler.cs
@ejsmith

ejsmith commented Aug 1, 2026

Copy link
Copy Markdown
Member Author

/preview

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1daa84f3bf

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@ejsmith

ejsmith commented Aug 1, 2026

Copy link
Copy Markdown
Member Author

/preview

@ejsmith

ejsmith commented Aug 1, 2026

Copy link
Copy Markdown
Member Author

/preview

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5384e98df9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +561 to +565
- name: Run Development Migrations
if: ${{ needs.version.outputs.is_dev_deploy == 'true' }}
run: |
migration_job="ex-dev-jobs-migration-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}"
kubectl create job --from=cronjob/ex-dev-jobs-migration "$migration_job" --namespace "$DEV_NAMESPACE"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Run migrations before rolling out the new saved-view model

During a development rollout with legacy boolean columns documents, the workflow applies the Helm upgrade before starting and awaiting this migration job, so new API pods can serve saved-view requests while SavedView.Columns already expects SavedViewColumnSettings; those requests can fail deserialization until migration 5 finishes. Fresh evidence beyond the resolved seed-order issue is this newly added deployment ordering: run the migration before making the incompatible API pods available, or retain legacy deserialization during the rollout.

AGENTS.md reference: AGENTS.md:L74-L74

Useful? React with 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4020671cd5

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

helm upgrade --set "version=${VERSION}" --reuse-values --values ./k8s/ex-dev-values.yaml ex-dev --namespace $DEV_NAMESPACE ./k8s/exceptionless

- name: Run Development Migrations
if: ${{ needs.version.outputs.is_dev_deploy == 'true' }}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Run the saved-view migration for production deployments

When a production tag is deployed over an installation containing legacy boolean saved-view columns, this migration step is skipped because it is gated exclusively to is_dev_deploy; the production branch at lines 674–678 only performs the Helm upgrade, and a repository-wide search finds no production migration invocation in this workflow. Since the chart's migration CronJob uses an effectively manual schedule, production can roll out the new SavedViewColumnSettings model while the old documents remain, causing saved-view reads to fail indefinitely; create and await the versioned production migration job before upgrading the incompatible workloads.

AGENTS.md reference: AGENTS.md:L72-L74

Useful? React with 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: eaf57a709c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

<DataTableColumnHeader class={getHeaderContentClass(header, headerClass)} column={header.column}
><FlexRender {header} /></DataTableColumnHeader
>
{#if header.column.getCanResize()}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Disable resizing when only one data column remains

When column management hides every data column but one, getColumnStyle deliberately returns no sizing styles, yet this condition still renders an active resize handle. Mouse dragging or pressing the arrow keys therefore changes and persists the column-sizing state—and can mark the saved view modified—while the sole column remains full width and shows no visual response. Hide/disable the handle under the same single-column condition, or apply the computed size.

Useful? React with 👍 / 👎.

@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown

Code Coverage

Package Line Rate Branch Rate Complexity Health
Exceptionless.Core 74% 66% 9756
Exceptionless.AppHost 38% 40% 139
Exceptionless.Insulation 37% 35% 286
Exceptionless.Web 85% 68% 6969
Summary 77% (23110 / 29920) 66% (10756 / 16234) 17150

@ejsmith
ejsmith merged commit 1487936 into main Aug 2, 2026
12 checks passed
@ejsmith
ejsmith deleted the issue/saved-view-column-settings branch August 2, 2026 22:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dev-preview Deploy this pull request to the shared dev environment.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants